package jwebtest.poi;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;

/**
 * 拷贝Sheet模板页
 * @author Yuanqy
 *
 */
public class CopyExcel {
 
	public static void main(String[] args) throws FileNotFoundException, IOException {
		// テンプレトとなるExcelファイルのパスを取得します。
		final String INVOICE_FILE = "C://work//jyuchu//仕//出力票//修正【完成】3_派遣者通知.xls";
		// ファイルをみみます。
		POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream(INVOICE_FILE));
		// ワクブックをみみます。
		HSSFWorkbook wb = new HSSFWorkbook(filein);
		// シトをみみます。
		HSSFSheet sheet1 = wb.getSheet("派遣者通知");
		HSSFSheet sheet2 = wb.createSheet("派遣者通知1");
		sheet2 = (HSSFSheet) copySheet(sheet1, sheet2);
		FileOutputStream fileOut = new FileOutputStream("d://test1.xls");
		wb.write(fileOut);
		fileOut.close();

	}

	static Sheet copySheet(Sheet sheetFrom, Sheet sheetTo) {

		// 初期化
		CellRangeAddress region = null;
		Row rowFrom = null;
		Row rowTo = null;
		Cell cellFrom = null;
		Cell cellTo = null;

		// セル合のコピ
		for (int i = 0; i < sheetFrom.getNumMergedRegions(); i++) {
			region = sheetFrom.getMergedRegion(i);
			if ((region.getFirstColumn() >= sheetFrom.getFirstRowNum()) && (region.getLastRow() <= sheetFrom.getLastRowNum())) {
				sheetTo.addMergedRegion(region);
			}
		}

		// セルのコピ
		for (int intRow = sheetFrom.getFirstRowNum(); intRow < sheetFrom.getLastRowNum()+1; intRow++) {
			rowFrom = sheetFrom.getRow(intRow);
			rowTo = sheetTo.createRow(intRow);
			if (null == rowFrom)
				continue;
			rowTo.setHeight(rowFrom.getHeight());
			for (int intCol = 0; intCol < rowFrom.getLastCellNum()+1; intCol++) {
				// セル幅のコピ
				sheetTo.setDefaultColumnStyle(intCol, sheetFrom.getColumnStyle(intCol));
				sheetTo.setColumnWidth(intCol, sheetFrom.getColumnWidth(intCol));
				cellFrom = rowFrom.getCell(intCol);
				cellTo = rowTo.createCell(intCol);
				if (null == cellFrom)
					continue;
				// セルスタイルとタイプのコピ
				cellTo.setCellStyle(cellFrom.getCellStyle());
				cellTo.setCellType(cellFrom.getCellType());

				// タイトル内容のコピ
				if (null != cellFrom.getStringCellValue() && !"".equals(cellFrom.getStringCellValue().trim()))
					cellTo.setCellValue(cellFrom.getStringCellValue());
			}
		}

		// 是否显示网格线
		//sheetTo.setDisplayGridlines(false);
		// 显示比例
		//sheetTo.setZoom(80, 100);

		// シトをる。
		return sheetTo;

	}

}
